' 2 סמ ליגרת ןורתפ םיפרגה תרותב םימתירוגלא דדצ 1 : הלאש ןורתפ רבסה תורעה

Σχετικά έγγραφα
פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד

logn) = nlog. log(2n

פתרון תרגיל מרחבים וקטורים. x = s t ולכן. ur uur נסמן, ur uur לכן U הוא. ur uur. ur uur

כלליים זמן: S מחסנית, top(s) ראש המחסנית. (Depth First Search) For each unmarked DFS(v) / BFS(v) רקורסיבי. אלגוריתם :BFS

מתמטיקה בדידה תרגול מס' 13

חורף תש''ע פתרון בחינה סופית מועד א'

. {e M: x e} מתקיים = 1 x X Y

אלגוריתמים בתורת הגרפים חלק ראשון

תורת הגרפים - סימונים

פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד ... ( ) ( ) ( ) = L. uuruuruur. { v,v,v ( ) ( ) ( ) ( )

לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשע"ו (2016)

לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשע"ו ( ) ... חלק ראשון: שאלות שאינן להגשה נפריד למקרים:

משוואות רקורסיביות רקורסיה זו משוואה או אי שוויון אשר מתארת פונקציה בעזרת ערכי הפונקציה על ארגומנטים קטנים. למשל: יונתן יניב, דוד וייץ

תרגיל 13 משפטי רול ולגראנז הערות

שדות תזכורת: פולינום ממעלה 2 או 3 מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה. שקיימים 5 מספרים שלמים שונים , ראשוני. שעבורם

צעד ראשון להצטיינות מבוא: קבוצות מיוחדות של מספרים ממשיים

דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות

( )( ) ( ) f : B C היא פונקציה חח"ע ועל מכיוון שהיא מוגדרת ע"י. מכיוון ש f היא פונקציהאז )) 2 ( ( = ) ( ( )) היא פונקציה חח"ע אז ועל פי הגדרת

יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012)

לדוגמה: במפורט: x C. ,a,7 ו- 13. כלומר בקיצור

אלגוריתמים / תרגיל #1

תורישק :תורישקה תייעבב בוש ןייענ?t- t ל s- s מ לולסמ שי םאה 2

{ : Halts on every input}

gcd 24,15 = 3 3 =

הגדרה: קבוצת פעילויות חוקית היא קבוצה בה כל שתי פעילויות

אלגברה ליניארית (1) - תרגיל 6

אלגוריתמים בתורת הגרפים חלק שני

תרגול פעולות מומצאות 3

ל הזכויות שמורות לדפנה וסטרייך

Logic and Set Theory for Comp. Sci.

אלגברה מודרנית פתרון שיעורי בית 6

תכנון אלגוריתמים 2016 עבודה 1 שאלה 1 פתרון נתונות שתי בעיות. יש למצוא: אורך מסלול קצר ביותר המתחיל באחד מן הקודקודים s 1,..., s k ומסתיים ב t.

תרגול 1 חזרה טורי פורייה והתמרות אינטגרליות חורף תשע"ב זהויות טריגונומטריות

מבחן מועד ב' בהצלחה! אנא קיראו היטב את ההוראות שלהלן: ודאו כי כל עמודי הבחינה נמצאים בידכם.

שאלה 1 V AB פתרון AB 30 R3 20 R

מבני נתונים ואלגוריתמים תרגול #8-9

3-9 - a < x < a, a < x < a

פרק 8: עצים. .(Tree) במשפטים הגדרה: גרף ללא מעגלים נקרא יער. דוגמה 8.1: תרגילים: הקודקודים 2 ו- 6 בדוגמה הוא ).

גרפים אלגוריתמים בתורת הגרפים הרצאה 1 גיא פלג 15 במרץ 2012 הגדרה: מגן דוגמאות: זוגות לא סדורים כיוון שבקבוצה סדר לא חשוב.

חידה לחימום. כתבו תכappleית מחשב, המקבלת כקלט את M ו- N, מחליטה האם ברצוappleה להיות השחקן הפותח או השחקן השappleי, ותשחק כך שהיא תappleצח תמיד.

[ ] Observability, Controllability תרגול 6. ( t) t t קונטרולבילית H למימדים!!) והאובז' דוגמא: x. נשתמש בעובדה ש ) SS rank( S) = rank( עבור מטריצה m

אלגוריתמים 1, סמסטר אביב 2017

רשימת בעיות בסיבוכיות

מתמטיקה בדידה תרגול מס' 5

I. גבולות. x 0. מתקיים L < ε. lim אם ורק אם. ( x) = 1. lim = 1. lim. x x ( ) הפונקציה נגזרות Δ 0. x Δx

x a x n D f (iii) x n a ,Cauchy

מבני נתונים ויעילות אלגוריתמים

הגדרה: מצבים k -בני-הפרדה

בחינה בסיבוכיות עמר ברקמן, ישי חביב מדבקית ברקוד

טענה חשובה : העתקה לינארית הינה חד חד ערכית האפס ב- הוא הוקטור היחיד שמועתק לוקטור אפס של. נקבל מחד חד הערכיות כי בהכרח.

מודלים חישוביים תרגולמס 5

גבול ורציפות של פונקציה סקלרית שאלות נוספות

סדרות - תרגילים הכנה לבגרות 5 יח"ל

(2) מיונים השאלות. .0 left right n 1. void Sort(int A[], int left, int right) { int p;

פתרון תרגיל 6 ממשוואות למבנים אלגברה למדעי ההוראה.

מושגים: קשיר. o בעל 1 קשתות בדיוק.

תרגול מס' 6 פתרון מערכת משוואות ליניארית

brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק

מתמטיקה בדידה תרגול מס' 2

= 2. + sin(240 ) = = 3 ( tan(α) = 5 2 = sin(α) = sin(α) = 5. os(α) = + c ot(α) = π)) sin( 60 ) sin( 60 ) sin(

תורת הקבוצות תרגיל בית 2 פתרונות

פתרון תרגיל בית 6 מבוא לתורת החבורות סמסטר א תשע ז

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 315, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן

תרגיל 7 פונקציות טריגונומטריות הערות

מבני נתונים אדמיניסטרציה ד"ר אלכס סמורודניצקי, רוס 210, שני 5:30 4:15. ציון:

אלגוריתמים בתורת הגרפים חלק רביעי

אוסף שאלות מס. 3 פתרונות

מודלים חישוביים פתרון תרגיל 5

תוכן הפרק: ,best case, average case דוגמאות 1. זמן - נמדד באמצעות מס' פעולות סיבוכיות, דוגמאות, שיפור בפקטור קבוע האלגוריתם. וגודלם. איטרטיביים. לקלט.

מבני נתונים (234218) 1

s ק"מ קמ"ש מ - A A מ - מ - 5 p vp v=

חשבון אינפיניטסימלי 1 סיכום הרצאות באוניברסיטה חיפה, חוג לסטטיסטיקה.

c ארזים 26 בינואר משפט ברנסייד פתירה. Cl (z) = G / Cent (z) = q b r 2 הצגות ממשיות V = V 0 R C אזי מקבלים הצגה מרוכבת G GL R (V 0 ) GL C (V )

קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים.

סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות

תרגילים באמצעות Q. תרגיל 2 CD,BF,AE הם גבהים במשולש .ABC הקטעים. ABC D נמצאת על המעגל בין A ל- C כך ש-. AD BF ABC FME

הרצאה תרגילים סמינר תורת המספרים, סמסטר אביב פרופ' יעקב ורשבסקי

אינפי - 1 תרגול בינואר 2012

פתרונות , כך שאי השוויון המבוקש הוא ברור מאליו ולכן גם קודמו תקף ובכך מוכחת המונוטוניות העולה של הסדרה הנתונה.

מתכנס בהחלט אם n n=1 a. k=m. k=m a k n n שקטן מאפסילון. אם קח, ניקח את ה- N שאנחנו. sin 2n מתכנס משום ש- n=1 n. ( 1) n 1

מינימיזציה של DFA מינימיזציה של הקנוני שאותה ראינו בסעיף הקודם. בנוסף, נוכיח את יחידות האוטומט המינימלי בכך שנראה שכל אוטומט על ידי שינוי שמות

לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ב (2012) דפי עזר

רשימת משפטים והגדרות

אוטומטים- תרגול 8 שפות חסרות הקשר

אוטומט סופי דטרמיניסטי מוגדר ע"י החמישייה:

תוכן עניינים I בעיות מיון 2 1 סימון אסימפטוטי... 2 II מבני נתונים 20 8 מבני נתונים מופשטים משפט האב גרפים... 37

תורת הקבוצות יובל קפלן סיכום הרצאות פרופ ארז לפיד בקורס "תורת הקבוצות" (80200) באוניברסיטה העברית,

תורת המספרים 1 פירוק לגורמים ראשוניים סיכום הגדרות טענות ומשפטים אביב הגדרות 1.2 טענות

מודלים חישוביים מבחן מועד א', סמסטר א' תשע''ה (2015)

תרגול מס' 1 3 בנובמבר 2012

תשובות מלאות לבחינת הבגרות במתמטיקה מועד חורף תשע"א, מיום 31/1/2011 שאלון: מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן.

תרגול משפט הדיברגנץ. D תחום חסום וסגור בעל שפה חלקה למדי D, ותהי F פו' וקטורית :F, R n R n אזי: נוסחת גרין I: הוכחה: F = u v כאשר u פו' סקלרית:

אלגברה ליניארית 1 א' פתרון 7

סיכום- בעיות מינימוםמקסימום - שאלון 806


Trie מאפשר חיפוש, הכנסה, הוצאה, ומציאת מינימום (לקסיקוגרפי) של מחרוזות.

אופטימיזציה דיסקרטית 67855

(ספר לימוד שאלון )

אלגברה לינארית (1) - פתרון תרגיל 11

יווקיינ לש תוביציה ןוירטירק

Transcript:

אלגוריתמים בתורת הגרפים פתרון תרגיל מס' 2 לשאלות והערות נא לפנות לאילן גרונאו (shrilan@cs.technion.ac.il) א) ב) ג) גרף דו-צדדי (bipartite) הינו גרף (E )G V, אשר קיימת חלוקה של צמתיו לשתי קבוצות U,W e = ( w, u) או e = ( w) הינה מצורת e E כך שכל קשת (U W = V, U W = φ ). u U, כאשר w W מצא תנאי מספיק והכרחי לכך שגרף לא-מכוון הוא דו-צדדי. הראה אלגוריתם יעיל שבודק אם גרף הוא דו-צדדי ואם כן מציע חלוקה U,W מתאימה. נתח את סיבוכיות האלגוריתם שהצעת. (1 1. גרף לא מכוון (E )G V, הוא דו צדדי אם"ם לא קיים בו מעגל באורך אי זוגי. התנאי הכרחי: נניח (E )G V, גרף דו צדדי, שכל צמת בו שייך או ל U או ל W (באופן בלעדי). נניח שיש בו מעגל,v1 ). נסמן ב U (בלי הגבלת הכלליות) את v2, v2k + 1, באורך אי זוגי (לאו דווקא פשוט) (v1 הקבוצה בה נמצא. v 1 ניתן לראות (באינדוקציה פשוטה) כי כל צמת v i עבור i זוגי שייך ל W, ( v1, v2k +1 ) E אבל. v1, וכל צמת v i עבור i אי זוגי (בפרט 1+ k ( v2 שייך ל U. מכאן ש v2k U 1+ בסתירה להנחה על דו צדדיות הגרף. התנאי מספיק: בסעיף הבא נראה שאם אין בגרף מעגל באורך אי זוגי האלגוריתם המוצע מוצא חלוקה של צמתי הגרף לקבוצות זרות ומשלימות. לכן התנאי מספיק למציאת חלוקה מתאימה לשתי קבוצות. :1 2. אלגוריתם לחישוב ובדיקת גרף דו צדדי בהינתן גרף לא מכוון (E,GV (, ושתי קבוצות ריקות.U,W נבצע אלגוריתם שהוא ואריאציה על BFS מצמת שרירותי s בגרף. כל צמת במרחק זוגי נכניס ל U וצמת במרחק אי זוגי נכניס ל W: אתחול: נאתחל תור ריק,Q לכל,d[v] = v V ו-.U = W = φ כל עוד קיים צמת s ב V כך ש = :d[s] הכנס את s לראש התור ואתחל = 0.d[s] כל עוד Q אינו ריק: הוצא את v מראש התור. אם d[v] זוגי הכנס את v ל- U, אחרת הכנס אותו ל- W. לכל צמת u שכן של v בצע: אם = d[u] אז הכנס את u לסוף התור ו- d[v]+1.d[u] := אחרת אם d[u] d[v]+ זוגי עצור ופלוט: "הגרף הוא לא דו צדדי!". הסבר: כמו BFS האלגוריתם מעדכן פעם אחת בלבד את d[v] לכל צמת בגרף, ומוודא לכל קשת ) פעם אחת לפחות כי d[u] d[v]+ אי זוגי. d[u] d[v]+ אי זוגי אם"ם הזוגיות של v ו- u שונה, כלומר הם נמצאים בקבוצות שונות. לכן אם האלגוריתם פולט חלוקה לשתי קבוצות אז הגרף דו צדדי. אם הוא פולט "הגרף הוא לא דו צדדי!" אז קיימת קשת ) בגרף כך שסכום המרחקים בין צמת s כלשהו בגרף ל- v ול- u הוא זוגי. קיים, אם כן, מעגל (לאו דווקא פשוט) -s -u-v- s באורך אי זוגי לכן הגרף (E GV (, אכן אינו גרף דו צדדי. אם לא קיים מעגל אי זוגי בגרף האלגוריתם לא ייעצר לפני שכיסה את כל צמתי הגרף. הערות: ניתן גם לבצע אלגוריתם דומה כואריאציה על,DFS אך מתבקש במקרה זה להשתמש ב BFS כיוון שניתן להסתמך על הנכונות, ולהיעזר במרחקים שהוא מחשב. חשוב לוודא שכיסינו את כל צמתי הגרף, ולא להפסיק כשהתור Q מתרוקן.

3. סיבוכיות:.( O( E + V האלגוריתם פועל כמו,BFS כך שבכל איטרציה מוסיפים מספר קבוע של פעולות (בדיקות והוספה לקבוצות U ו W). קוטר הגרף הינו המקסימום מבין המרחקים המינימליים בין זוגות צמתים בגרף. מצא אלגוריתם יעיל לחישוב הקוטר של עץ לא-מכוון. א) נתח את סיבוכיות האלגוריתם שהצעת. ב) (2 הרעיון: נבצע שתי ריצות.BFS האחת מצמת שרירותי s בגרף, והשניה מצמת u הרחוק ביותר מ- v. לצמת הרחוק ביותר ממנו- u קוטר הגרף הוא המרחק בין s. האלגוריתם: :2 בחר צמת שרירותי s בעץ, ובצע אלגוריתם BFS סטנדרטי על העץ מ- s. יהי u הצמת שיצא אחרון מתור BFS בשלב הקודם. בצע אלגוריתם BFS מצמת u. יהי v הצמת שיצא אחרון מתור BFS של u. קוטר העץ הוא המרחק של v מ- u. הסבר: המרחק בין שני צמתים בעץ- הוא אורך המסלול הפשוט היחיד ביניהם. בנוסף ניעזר בטענה הבאה: (קלה להוכחה) u i קיים צמת u 0 u 1 בהינתן עץ BFS מכוון המושרה על, ומסלול פשוט כלשהו- u k (שנקרא לו "ראש המסלול") במסלול כך שלכל >0 j i מתקיים u j אבא של 1 j ולכל j k מתקיים j 1 u אבא של.u j * נשים לב שראש המסלול הוא אב קדמון של כל הצמתים במסלול. i< נראה כי כל מסלול פשוט (מרחק) בגרף אינו ארוך יותר מהמסלול הפשוט בין v ל- u (שנסמן ב- p ). כלומר שהמרחק בין v ל- u הוא מירבי. יהיו x,y שני צמתים כלשהם בגרף ו p 1 המסלול הפשוט ביניהם, שהראש שלו (ביחס לעץ BFS המכוון ש- s הוא שרשו) הוא w. 1 -y. נסמן ב- w 2 את ראש המסלול, p 2 וב- z את הצמת הראשון נתבונן במסלול הפשוט p 2 מ- לu q q q q p p1 = x 1 2 = u 2 המשותף ל- p 1 ו-. p 2 כך שמתקיים z y ו z y (מדוע חלוקה זו אפשרית?). בנוסף מתקיים w 2 אב קדמון או צאצא של w 1 (מדוע זה מתחייב?), לכן נוכל לסמן את ה"בוגר" מבין השניים ב- w. w הוא אב קדמון של x,y,u (מדוע?). wנמצא 1 ב- q. כלומר ש- w נמצא ב- p 2 ובנוסף הוא ראש המסלול (מדוע?). נוכל נניח הצמת r r'. p2 מנכונות BFS נובע כי u הוא צמת בעל מרחק = u w אם כן לסמן מחדש: y מירבי מ- s, ו v בעל מרחק מירבי מ- u. לכן מתקיימת סדרת אי השוויונים (מדוע?): ( = p2 = r + r' = d( wu, ) + d( w, wx, ) + d( w, w1, x) + d( w1, p1 d = מה קורה אם wנמצא 1 ב- q? 1 2. סיבוכיות: האלגוריתם הוא על בסיס הפעלה כפולה של אלגוריתם BFS עם תוספת קבועה של פעולות בדיקה. מכאן שסיבוכיות האלגוריתם המוצע היא O( V ),O( E + V )= כיוון שבעץ לא מכוון מתקיים. E = V -1 הערה: רצוי להביא את הביטוי לסיבוכיות לצורה הפשוטה ביותר שלו כפונקציה של מספר הצמתים (אם אפשר) ומספר הקשתות (אם צריך).

.. s V ב) נתון גרף G(V,E) אשר כל אחת מקשתותיו צבועה באדום או שחור, וצומת א) הראה אלגוריתם, שיעילותו ) V O ( E +, המוצא לכל צמת v בגרף את המסלול הקצר ביותר מ- s העובר בקשת אדומה אחת לפחות. הראה אלגוריתם, שיעילותו ) V, O ( E + המוצא לכל צמת v בגרף את המסלול הקצר ביותר מ- s העובר בקשת אדומה אחת בדיוק. רמז: השתמשו ברדוקציה ל- BFS. (רדוקציה הינה טרנספורמציה של בעיה נתונה לבעיה אחרת, שאת פתרונה ניתן לתרגם לפתרון הבעיה המקורית). :3 (3 פתרון ב': רדוקציה ל- BFS. נעתיק את הבעיה לבעיה שקולה (על גרף אחר) הניתנת לפתרון על ידי אלגוריתם.BFS יש לוודא שההעתקה לא מוסיפה לסיבוכיות של אלגוריתם.BFS בהינתן גרף (E GV (, נגדיר גרף שכבות E E = E כך ש: E red V V = V ו- ( V = { v v V} V, G( כך ש- ) E) E' = {( u, v ) ( E}, Ered = {( u, ( isa rededgeing} ( ),V )G מצמת s. נוכיח כי לכל צמת v ב- V מתקיים נריץ אלגוריתם BFS על הגרף החדש (E d(s, (המרחק בין שני הצמתים ב- G ) הוא אורך המסלול הקצר ביותר מ- לs -v העובר בקשת אדומה אחת לפחות. E red (משפט "מסלול חוצה חתך"). כל מסלול מ- s ל- v עובר בקשת השייכת ל- d(s, הוא אורך המסלול הקצר ביותר מ- s ל- v. מסלול זה נראה כך: p= ( s u w לכן המסלול. E red s p = ( כאשר u,w)) קשת ב- u w הנמצא ב- G, העובר בקשת אדומה אחת לפחות-.(w) מכאן שקיים מסלול באורך d(s, העובר בקשת אדומה אחת לפחות. p = s u מסלול כלשהו ב- G,העובר בקשת אדומה אחת לפחות- u u יהי ) + ( 1 i i 1 v =p ( s u נמצא ב- G ואורכו זהה לזה של p. לכן א. ז המסלול ) 1 ui ui+ 1 v ( u i u i+ 1) s. p = p d( מ.ש.ל מנכונות BFS נובע:, V, G( כך 2. נבצע העתקה דומה. הפעם לגרף מכוון: בהינתן גרף (E GV (, נגדיר גרף שכבות מכוון (E 1 2 E = Eblack Eblack Ered 1 2 black = {( ( isa black edgeing}, Eblack = {( u, v V V = V ו- ( V = { v v V} ) פתרון א': ניתן לבצע וריאציה על BFS כאשר לכל צמת v מעדכנים שני ערכים תוך כדי הריצה: -v אורך המסלול הקצר ביותר מ- לs :λ( -v. אורך המסלול השחור הקצר ביותר מ- לs λ: b ( המכיל קשת אדומה אחת לפחות/בדיוק. האלגוריתם דומה מאוד לאלגוריתם לחישוב אורך מסלול זוגי מינימלי שהוצג בתרגול. יש לשים לב שכל צמת יכול להיכנס לתור ה- BFS (להתעדכן) פעמיים (לכל היותר). E ) ( isa black edgeing}. E red = {( u, ( isa rededgeing} ניתן להראות נכונות באופן דומה. ההבדל כאן הוא שבגרף הנוצר ע"י הרדוקציה הזו בכל מסלול מכוון יש לכל היותר קשת אדומה אחת (כי לא ניתן לעבור מ- לV ). - V ש-

(4 שורש בגרף מכוון הינו צומת בגרף ממנו קיים מסלול מכוון לכל הצמתים בגרף. א) נתון גרף מכוון (E )G. V, הצע אלגוריתם שסיבוכיותו ) E )O המוצא שורש ב- G, או מודיע שאין כזה. ב) הוכח את נכונות האלגוריתם. הרעיון: נריץ DFS מצמת שרירותי s בגרף. אם פרשנו את כל הגרף אז s הוא שרש של הגרף. אם לא- נבחר צמת אחר אליו טרם הגענו ונריץ ממנו,DFS וחוזר חלילה עד שנכסה את כל הגרף ע"י יער.DFS יהי r הצמת האחרון ממנו הרצנו ;DFS הוא "מועמד לשרש הגרף". נריץ ממנו DFS (על כל הגרף מחדש). אם עץ ה- DFS החדש פורש את הגרף אז r הוא שרש הגרף. אחרת לא קיים שרש לגרף :4. האלגוריתם : מציאת "מועמד לשרש הגרף": סמן כל v ב- כV "חדש". אתחל מחסנית S ריקה. כל עוד קיים s "חדש" ב- V : סמן את s כ"ישן" והכנס אותו למחסנית S. כל עוד המחסנית S אינה ריקה: הוצא את v מראש המחסנית. הכנס כל שכן "חדש" של v לראש המחסנית. בדיקת המועמד: יהי r הצמת האחרון שהוצאנו מהמחסנית. סמן את כל הצמתים ב- כV "חדשים" ובצע DFS מ- r. אם כל הצמתים "ישנים" החזר את r בתור שרש. אם לא החזר: "אין שרש בגרף (E."GV (, סיבוכיות: אנו מבצעים שתי סריקות אתחול לצמתים-,V ) )O ושתי סריקות על כל הקשתות בגרף (אחת בבניית יער ה- DFS, ואחת באלגוריתם הבדיקה בסוף)-.O( E ) לפני ריצת האלגוריתם נבדוק כי. E > V -2 אם התנאי לא מתקיים אז הגרף לא קשיר (מדוע?) ולגרף אין שרש. אם.O( E + V )=O( E ) נריץ את האלגוריתם למעלה בסיבוכיות E > V -2 2. הוכחת נכונות: אם האלגוריתם למעלה מחזיר צמת r בתור שרש אז r שרש של G. אחרי ריצת DFS בסוף האלגוריתם כל צמת בגרף שייך לעץ DFS ששורשו r, לכן מנכונות DFS נובע כי קיים מסלול מכוון מ- r לכל צמת בגרף G. אם קיים שרש s בגרף מכוון G אז האלגוריתם למעלה מחזיר צמת כלשהו r שהוא שרש של G (האם בהכרח.(?r=s מנכונות,DFS בו השתמשנו בחלק הראשון של האלגוריתם (מציאת "מועמד לשרש הגרף") כל צמת בגרף נכנס פעם אחת בדיוק למחסנית ויוצא ממנה פעם אחת בדיוק. נתבונן בצמת r הנמצא בתחתית המחסנית ברגע בו הוצאנו את השרש s מהמחסנית. טענה 1: r שרש של הגרף G. מנכונות DFS נובע כי בכל רגע נתון קיים מסלול (מכוון) מהצומת בתחתית המחסנית (שרש עץ ביער DFS של הגרף G) לכל הצמתים הנמצאים באותו רגע במחסנית; לכן s ישיג מ- r. כל צמת בגרף ישיג מ- s (כי הוא שרש של G), ולכן כל צמת בגרף ישיג גם מ- r. טענה 2: אחרי הוצאת הצמת r מהמחסנית כל הצמתים בגרף מסומנים "ישנים". כל הדיון הבא מתייחס לנקודה בזמן בה הוצאנו את r מהמחסנית. נניח קיים צמת v שאינו מסומן. p = ( r u כ"ישן" (לא הוכנס ל- S ). v ישיג מ- r (טענה 1), לכן קיים מסלול מכוון ) 1 ui ui + 1v אינדקס מירבי) שאינו מסומן כ"ישן" (קיים כזה מפני ש- r (בעל p הצמת האחרון במסלול u i יהי r הוא "ישן" אך אינו נמצא במחסנית (הוצאת u i 1+i u אינו מסומן כ"ישן". מסומן כ"ישן" ו- v לא)..I.II

u i מהמחסנית מהמחסנית משאירה אותה ריקה), לכן הוא יצא מהמחסנית. גם ברגע הוצאתו של u i 1+i u לא היה מסומן כ"ישן" (צמת המסומן כ"ישן" נשאר "ישן"). מיד אחרי הוצאתו של 1+i u) למחסנית ומסמנים אותם מהמחסנית מכניסים את כל השכנים ה"חדשים" שלו (בפרט 1+i u עדיין אינו מסומן כ"ישן". כ"ישנים", בסתירה לכך ש- מסקנה: אחרי הוצאת r מהמחסנית כל הצמתים "ישנים", לכן r הוא "מועמד לשרש הגרף". הצמת r הוא אכן שרש של הגרף G, ולכן ריצת הבדיקה תצליח ו- r יוחזר כשרש הגרף. לכן האלגוריתם מחזיר צמת כלשהו (r) שהוא שרש של G. מ.ש.ל א) רכיב קשיר-היטב בגרף מכוון (E )G V, הינו תת-קבוצה של צמתים V ' V כך שלכל זוג צמתים ברכיב ' V v קיימים ב- Gמסלולים מכוונים. u v, v u מצא אלגוריתם למציאת רכיבים קשירים-היטב בגרף מכוון, שיעילותו. O ( E + V ) (5 :5. E = {( ( v, u) נגדיר את הגרף ההפוך ל- G : G ( V, E ) כך ש-{ E ניעזר בטענות הבאות (מומלץ לנסות להוכיח עצמאית): 1. רכיבי הצמתים הקשירים היטב (מקסימליים) ב- G וב G- זהים. 2. בכל ריצת DFS על G מקבלים יער של עצי- DFS. כל רכיב קשירות מוכל (על כל צמתיו) בעץ DFS כלשהו. בהינתן יער DFS של הגרף G ניתן לסווג כל קשת ) בגרף לאחת הקבוצות הבאות לפחות: v באותו רכיב קשירות..DFS בהרצת מציין את זמן הנסיגה מ- v finish[v] כאשר,finish[v]<finish[u] מסקנה: אין קשתות נכנסות לרכיב הקשירות של הצמת ממנו DFS נסוג אחרון. כלומר שב- G אין קשתות יוצאות מרכיב הקשירות של הצמת ממנו DFS נסוג אחרון. האלגוריתם: הרץ DFS על הגרף G על מנת לקבל יער DFS מכוון הכולל את כל צמתי הגרף. בכל פעם שהשגרה הרקורסיבית נסוגה מצמת v הכנס אותו למחסנית S. חשב את הגרף ההפוך- G. הרץ DFS על הגרף G על מנת לקבל יער,DFS כאשר סדר בחירת הצמתים (שרשי עצי היער) הוא בהתאם לסדר הופעתם במחסנית S (סדר יורד של.(finish כל עץ DFS ביער המתקבל הוא רכיב קשיר היטב (מקסימלי) של G. נכונות: נובעת מהטענות למעלה + אינדוקציה על מספר רכיבי הקשירות המקסימליים ב- G. סיבוכיות: שתי ריצות DFS וחישוב.O( E + V ):G.3.4